package Transmetteurs;
import java.util.*;
import Informations.*;
import Destinations.*;
import Transmetteurs.*;
import Sources.*;
import Sondes.*;
import Recepteurs.*;
/**
 * Classe TransmetteurParfait qui herite de la classe transmetteur, transmets l'information quelle recoit au destination 
 * sans perte d'information
 * @author NANOUS
 * @author GUEYE
 * @author THIAM
 * @author NDIAYE
 */
public class TransmetteurParfait<R> extends Transmetteur<R,R> {

	public TransmetteurParfait(){
		
	}
	
	
	//Information<Boolean> informationRecue;
	
		/**
		 * cette mthode "recevoir" hrite du transmetteur qui est  la fois un emetteur et un rcepteur 
		 * @throws information: L'information que le TransmetteurParfait recoive
		 * @throws InformationNonConforme
		 */

	public void recevoir (Information <R> information) { 
      
	 informationRecue = information;
	 try {
		this.emettre();
	} catch (InformationNonConforme e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	  
	}
	 
	 
	/**
	 * emet l'information recue, sans la modifier
	 * @throws InformationNonConforme
	 */
	public void emettre() throws InformationNonConforme {
		
		for (DestinationInterface <R> destination : destinationsConnectees) {
			destination.recevoir(informationRecue);	
			}
		for(int i=0;i<informationRecue.nbElements();i++)
			System.out.println("Transmetteur Parfait envoit: : "+i+" "+informationRecue.iemeElement(i));
	}
}
